// 使用 uni.request 封装的请求模块
import { getBaseURL } from './config.js'

function request(options) {
  // 添加基础URL前缀
  if (!options.url.startsWith('http')) {
    options.url = getBaseURL() + options.url
  }
  
  return new Promise((resolve, reject) => {
    options.success = (response) => {
      // 检查响应是否为JSON格式
      if (response && response.data) {
        // 检查Content-Type是否为JSON
        const contentType = response.header ? (response.header['Content-Type'] || response.header['content-type']) : '';
        if (contentType && (contentType.includes('application/json') || contentType.includes('text/json'))) {
          resolve(response.data);
        } else if (typeof response.data === 'string' && (response.data.startsWith('{') || response.data.startsWith('['))) {
          // 如果是JSON字符串，尝试解析
          try {
            const jsonData = JSON.parse(response.data);
            resolve(jsonData);
          } catch (e) {
            reject(new Error('响应不是有效的JSON格式'));
          }
        } else if (typeof response.data === 'object') {
          // 如果已经是对象，直接返回
          resolve(response.data);
        } else {
          // 其他情况，可能是HTML错误页面
          reject(new Error('服务器返回了非JSON响应: ' + (response.data || '无数据')));
        }
      } else {
        reject(new Error('服务器无响应数据'));
      }
    }
    
    options.fail = (err) => {
      reject(err)
    }
    
    uni.request(options)
  })
}

export default request